using System.Collections.Generic;

namespace SmartMathLibrary.Geometry
{
    /// <summary>
    /// An interface to implement a GeometyContainer.
    /// </summary>
    public interface IGeometyContainer
    {
        /// <summary>
        /// Gets or sets the data for the container.
        /// </summary>
        /// <value>The data for the container.</value>
        List<GeometricObject> Container { get; set; }

        /// <summary>
        /// Counts the number of geometric objects, which the current 
        /// instance includes.
        /// </summary>
        /// <value>The number of geometric objects which the current 
        /// instance includes.</value>
        int Count { get; }

        /// <summary>
        /// Adds a new geometric object to the container.
        /// </summary>
        /// <param name="value">The geometric object to add to the container.</param>
        void Add(GeometricObject value);

        /// <summary>
        /// Removes all object from the container.
        /// </summary>
        void Clear();

        /// <summary>
        /// Removes the geometric object at a specified index.
        /// </summary>
        /// <param name="index">The specified index from the object which should be removed.</param>
        void RemoveAt(int index);

        /// <summary>
        /// Gets the enumerator.
        /// </summary>
        /// <returns>The enumerator of the current iteration.</returns>
        IEnumerator<GeometricObject> GetEnumerator();
    }
}